1. Field of the Invention
The present invention relates generally to data processing environments and, more particularly, to a distributed database system providing optimized data transfer, space management, timestamp management, and deadlock detection with optimal messaging.
2. Description of the Background Art
Computers are very powerful tools for storing and providing access to vast amounts of information. Computer databases are a common mechanism for storing information on computer systems while providing easy access to users. A typical database is an organized collection of related information stored as “records” having “fields” of information. As an example, a database of employees may have a record for each employee where each record contains fields designating specifics about the employee, such as name, home address, salary, and the like.
Between the actual physical database itself (i.e., the data actually stored on a storage device) and the users of the system, a database management system or DBMS is typically provided as a software cushion or layer. In essence, the DBMS shields the database user from knowing or even caring about the underlying hardware-level details. Typically, all requests from users for access to the data are processed by the DBMS. For example, information may be added or removed from data files, information retrieved from or updated in such files, and so forth, all without user knowledge of the underlying system implementation. In this manner, the DBMS provides users with a conceptual view of the database that is removed from the hardware level. The general construction and operation of database management systems is well known in the art. See e.g., Date, C., “An Introduction to Database Systems, Seventh Edition”, Addison Wesley, 2000.
Increasingly, businesses run mission-critical systems which store information using database management systems. These systems have long since moved from a centralized mainframe environment to a de-centralized or distributed environment. One or more PC “client” systems, for instance, may be connected via a network to one or more server-based database systems (e.g., SQL database server), to form a client/server database system. Multiple tier database systems including clients, application servers, and database servers connected by networks are also currently in wide use.
As computer systems and networks become increasingly complex and critical to business operations, the need to have high availability of these systems is becoming correspondingly important. Data networks, and especially the Internet, are uniting the world into a single global marketplace that never closes. Employees, sales representatives, and suppliers in far-flung regions need access to mission-critical systems every hour of the day. Furthermore, increasingly sophisticated customers expect twenty-four hour per day sales and service from a Web site. As a result, tremendous competitive pressure is placed on businesses to keep their systems running continuously.
Today, an increasing number of users need their systems to be continuously available, with no downtime. However, while current “high availability” solutions provide high levels of availability, these solutions do not currently provide continuous availability. Instead, current high availability solutions require some amount of downtime for performing maintenance, adding upgrades, and the like. For example, if a high availability system is resource constrained, it would typically need to be brought down to allow for adding additional CPU and/or memory resources. A better approach providing increased levels of availability is desired.
Another recent trend is towards the use of “blade servers”, which is an architecture that provides for modular, efficient, and cost-effective systems. This type of architecture typically includes virtualized storage and a network using a high speed interconnect switched fabric. Blade servers may, for instance, be implemented using Intel processors and the Linux operating system. The Linux operating system has matured in terms of reliability, availability, scalability, and manageability, so as to facilitate administration of the blade servers. The price/performance of the Intel/Linux platform makes it a compelling platform for running mission critical applications like database servers and enterprise resource planning (ERP) applications in a distributed fashion. However, this type of environment requires that the DBMS engines have the ability to provide the necessary scalability and transparent availability.
What is needed is a solution that enables a customer to run applications at multiple clustered servers with the clustered servers accessing data in databases shared amongst the servers in the cluster. For example, suppose that a customer runs into a scalability problem with a database system because the customer runs out of CPU power in the machine(s) on which the database system is operated. The clustered server solution should enable the customer to quickly and easily address this scalability problem by simply adding another machine to the configuration. The solution should be easily expandable, so that customers may simply add additional servers in order to increase system capacity and provide improved performance without major data restructuring and the associated system downtime that is common in current systems. This type of solution enables the customer to purchase hardware in smaller increments as needed to keep up with growth. This is advantageous compared with buying larger machines in advance based on anticipated future demand for resources (e.g., disk, memory, CPU, and the like).
The solution should also provide for transparent, continuous availability of the applications run on the cluster with instantaneous fail-over amongst servers in the cluster. When one server is down (e.g., for upgrading the CPU) the applications should be able to operate using the remaining machines in the cluster. Even if one node fails, applications should be able to access the other nodes, so that a continuously available solution is provided.
At the same time, the solution should provide transparency to users so that they need not be concerned with all of the internal details of running multiple database servers. For instance, the solution should provide a single server appearance to applications. Also, an infrastructure should be provided which enables server processes to run against shared disks while resolving cache coherency issues in transparent fashion. Ideally, the solution should facilitate operational administration of the infrastructure necessary to manage the distributed database environment while also minimizing the number of messages sent between nodes so that such messages do not adversely affect system performance. The operational administration that is provided should include detection of deadlocks between nodes competing for shared resources and efficient management space utilization and timestamps in the distributed system. The present invention provides a solution to these and other needs.